package com.ruoyi.verify.mapper;

import com.ruoyi.verify.domain.VdaResult;
import com.ruoyi.verify.domain.VerifyQuestionnaire;
import com.ruoyi.verify.domain.VerifyTemplateContent;


import java.util.LinkedHashMap;
import java.util.List;


import org.apache.ibatis.annotations.Param;

/**
 * 现场审核问卷Mapper接口
 *
 * @author ygx
 * @date 2020-10-14
 */
public interface VerifyTemplateContentMapper
{
    /**
     * 查询现场审核问卷
     *
     * @param templateid 现场审核问卷ID
     * @return 现场审核问卷
     */
    public VerifyTemplateContent selectVerifyTemplateContentById(String templateid);

    /**
     * 查询现场审核问卷列表
     *
     * @param verifyTemplateContent 现场审核问卷
     * @return 现场审核问卷集合
     */
    public List<VerifyTemplateContent> selectVerifyTemplateContentList(VerifyTemplateContent verifyTemplateContent);

    /**
     * 新增现场审核问卷
     *
     * @param verifyTemplateContent 现场审核问卷
     * @return 结果
     */
    public int insertVerifyTemplateContent(VerifyTemplateContent verifyTemplateContent);

    /**
     * 修改现场审核问卷
     *
     * @param verifyTemplateContent 现场审核问卷
     * @return 结果
     */
    public int updateVerifyTemplateContent(VerifyTemplateContent verifyTemplateContent);

    /**
     * 删除现场审核问卷
     *
     * @param templateid 现场审核问卷ID
     * @return 结果
     */
    public int deleteVerifyTemplateContentById(String templateId);

    /**
     * 删除现场审核问卷（问卷预览）
     *
     * @param templateid 现场审核问卷ID
     * @return 结果
     */
    public int deletePriviewContentById(String templateId);


    /**
     * 批量删除现场审核问卷
     *
     * @param templateids 需要删除的数据ID
     * @return 结果
     */
    public int deleteVerifyTemplateContentByIds(String[] templateids);

    /**
     * 查询现场审核问卷
     *
     * @param templateid 现场审核问卷ID
     * @return 现场审核问卷
     */
    public VerifyQuestionnaire selectContentByVerifyid(String verifyids);

    /**
     * 根据verifyid获取模板表数据并插入到问卷表中
     * @param verifyTemplateContent
     * @return
     */
    public int insertQuestionnaire(VerifyQuestionnaire verifyQuestionnaire);

    /**
     * 根据计划id、公司、供应商代码、用户id、类型、状态获取问卷
     * @param verifyTemplateContent
     * @return
     */
    public List<LinkedHashMap<String,Object>> selectQuestionnaireContent(VerifyQuestionnaire VerifyQuestionnaire);


    /**
     * VDA审核
     * 根据计划id、公司、供应商代码、用户id、类型、状态获取问卷
     */
    public List<LinkedHashMap<String,Object>> selectVdaQuestionnaireContent(VerifyQuestionnaire VerifyQuestionnaire);

    /**
     * VDA审核
     * 根据计划id、公司、供应商代码、用户id、类型、状态获取问卷（不区分人，显示所有模块所有题目）
     */
    public List<LinkedHashMap<String,Object>> selectAllVdaQuestionnaireContent(VerifyQuestionnaire VerifyQuestionnaire);

    /**
     * 根据问卷id更新问卷打分、打分人、备注或根据计划id、供应商编码、模板id更新问卷状态
     * @param verifyTemplateContent
     * @return
     */
    public int updateQuestionnaire(VerifyQuestionnaire verifyQuestionnaire);

    /**
     * 根据问卷id和打分人判断，此人是否有更改权限，true代表有更改权限
     * @param questionnaireid
     * @param loguser
     * @return boolean
     */
    public boolean checkUpdateAuth(@Param("questionnaireid") String questionnaireid, @Param("loguser") String loguser);

    /**
     * 根据提交人负责的某计划中的某供应商的题目状态判断是否允许提交
     * @param VerifyQuestionnaire
     * @return boolean
     */
    public boolean checkCommit(VerifyQuestionnaire verifyQuestionnaire);

    /**
     * VDA6.3审核中判断发现项是否为空
     * true=空，false=非空
     * @return boolean
     */
    public boolean checkIfProblemNull(VerifyQuestionnaire verifyQuestionnaire);

    /**
     * 根据提交人负责的某计划中的某供应商的题目状态判断是否允许提交
     * @param VerifyQuestionnaire
     * @return boolean
     */
    public boolean checkPublicCommit(VerifyQuestionnaire verifyQuestionnaire);

    /**
     * 根据问卷id获取状态
     * @param questionnaireid
     * @return status
     */
    public String selectStatusByQuestionnaireid(String questionnaireid);

    /**
     * 根据题目模块id、计划id、供应商编码获取类别总分
     * @param verifyid planid vendorcode
     * @return
     */
    public String sumByParentId(@Param("verifyid") String verifyid, @Param("planid") String planid, @Param("vendorname") String vendorname);

    /**
     * 获取class的数据
     * @param verifyid
     * @param planid
     * @param vendorcode
     * @return score grade mome content weight
     */
    public List<LinkedHashMap<String,String>> selectResult(VerifyQuestionnaire verifyQuestionnaire);

    /**
     * 判断打分中是否存在-999的分数，若存在则等级直接为最低等级
     * @param planid
     * @param vendorcode
     * @return
     */
    public boolean checkLowLevel(@Param("planid") String planid, @Param("vendorname") String vendorname);


    /**
     * 检查当前用户是否提交
     * @param
     * @return boolean
     */
    public boolean checkCurrentCommit(VerifyQuestionnaire verifyQuestionnaire);

    /**
     * VDA审核
     * 通过大类id获取当前大类下的所有题目
     */
    public List<VerifyQuestionnaire> selectVdaContentByVerifyid(@Param("verifyid") String verifyid,@Param("planid") String planid);

    /**
     * 通过计划id获取该计划包含的模块id和content
     *
     * @param
     * @return 结果
     */
    public List<VerifyQuestionnaire> selectPlanVerifyidAndContent(@Param("planid") String planid);


    /**
     * 通过大类id获取所有题目信息
     * @param planid
     * @return
     */
    public List<VerifyQuestionnaire> selectVdaResultbyParentid(@Param("verifyid") String verifyid,@Param("planid") String planid);
}
